home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / program / swagg_m.zip / GRAPHICS.SWG / 0020_A Simple Graph Unit.pas < prev    next >
Pascal/Delphi Source File  |  1993-08-27  |  1KB  |  74 lines

  1. Unit MyGraph;
  2.  
  3. Interface
  4.  
  5. Type
  6.   ColorValue = Record
  7.     Rvalue,
  8.     Gvalue,
  9.     Bvalue : Byte;
  10.   end;
  11.  
  12.   PaleteType = Array [0..255] of ColorValue;
  13.  
  14. Procedure palette(tp : paleteType);
  15. Procedure pset(x, y : Integer; c : Byte);
  16. Function  Point(x, y : Integer) : Byte;
  17. Procedure RotatePalette(Var p : PaleteType; n1, n2, d : Integer);
  18. Procedure SetVga;
  19.  
  20. Implementation
  21.  
  22. Uses
  23.   Crt, Dos;
  24.  
  25.  
  26.  
  27. Var
  28.   n, x,
  29.   y, c, i : Integer;
  30.   ch      : Char;
  31.   p       : PaleteType;
  32.   image   : File;
  33.   ok      : Boolean;
  34.  
  35. Procedure palette(tp : PaleteType);
  36. Var
  37.   regs : Registers;
  38. begin { Procedure VGApalette }
  39.   Regs.AX := $1012;
  40.   Regs.BX := 0; { first register to set }
  41.   Regs.CX := 256; { number of Registers to set }
  42.   Regs.ES := Seg(tp);
  43.   Regs.DX := Ofs(tp);
  44.   Intr($10, regs);
  45. end; { Procedure SetVGApalette }
  46.  
  47. Procedure Pset(x, y : Integer; c : Byte);
  48. begin { Procedure PutPixel }
  49.   mem[$A000 : Word(320 * y + x)] := c;
  50. end; { Procedure PutPixel }
  51.  
  52. Function point(x, y : Integer) : Byte;
  53. begin { Function GetPixel }
  54.   Point := mem[$A000 : Word(320 * y + x)];
  55. end; { Function GetPixel }
  56.  
  57. Procedure rotatePalette(Var p : PaleteType; n1, n2, d : Integer);
  58. Var
  59.   q : PaleteType;
  60. begin { Procedure rotatePalette }
  61.   q := p;
  62.   For i := n1 to n2 do
  63.     p[i] := q[n1 + (i + d) mod (n2 - n1 + 1)];
  64.   palette(p);
  65. end; { Procedure rotatePalette }
  66.  
  67. Procedure SetVga;
  68. begin
  69.   Inline($B8/$13/$00/$CD/$10);
  70. end;
  71.  
  72. end.
  73.  
  74.